package com.meitianhui.convenitenbuy.util;

import android.text.TextUtils;

import java.math.BigDecimal;
import java.text.DateFormat;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;

/**
 *  Created by Administrator on 2017/10/31.
 */

public class StringUtils {

    /**
     * Indicates whether the specified string is blank or not.
     */
    public static boolean isBlank(String value) {
        return value == null || value.trim().length() == 0;
    }

    /**
     * @return Empty string if the specified value is null.
     */
    public static String nullToEmpty(String value) {
        return value == null ? "" : value;
    }

    /**
     * Add a rmb "¥" before cash.
     */
    public static String addRmbMark(String cash) {
        return "¥" + cash;
    }

    /**
     * Add a rmb "¥" before cash.
     */
    public static String addRmbMark(int cash) {
        return addRmbMark(String.valueOf(cash));
    }

    public static DecimalFormat mFecimalFormat = new DecimalFormat("##0.00");

    public static boolean isPhone(String phone) {
        Pattern pattern = Pattern.compile("^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\\d{8}$");
        if (phone == null || phone.trim().length() == 0)
            return false;
        return pattern.matcher(phone).matches();
    }

    /**
     * java 判断是否是金额
     *
     * @param str
     * @return
     */
    public static boolean isAmount(String str) {
        java.util.regex.Pattern pattern = java.util.regex.Pattern.compile("^(([1-9]{1}\\d*)|([0]{1}))(\\.(\\d){0,2})?$"); // 判断小数点后2位的数字的正则表达式
        java.util.regex.Matcher match = pattern.matcher(str);
        if (!match.matches()) {
            return false;
        } else {
            return true;
        }
    }

    //格式化金额
    public static String formatMoney(String value){
        if(value == null || value.trim().equals("") ){
            value = "0.00";
        }
        return mFecimalFormat.format(new BigDecimal(value));
    }
    /**
     * 金额相减
     * @param valueStr 基础值
     * @param minusStr 减数
     * @return
     */
    public static String moneySub(String valueStr,String minusStr){
        if(TextUtils.isEmpty(valueStr)){
            valueStr = "0";
        }
        if(TextUtils.isEmpty(minusStr)){
            minusStr = "0";
        }
        BigDecimal value= new BigDecimal(valueStr);
        BigDecimal subtrahend = new BigDecimal(minusStr);
        return mFecimalFormat.format(value.subtract(subtrahend));
    }

    // 金额相乘
    public static String moneyMul(String valueStr,String mulStr){
        BigDecimal value = new BigDecimal(valueStr);
        BigDecimal mulValue = new BigDecimal(mulStr);
        return mFecimalFormat.format(value.multiply(mulValue));
    }

    // 金额相加
    public static BigDecimal moneyAdd(BigDecimal value,BigDecimal augend){
        return value.add(augend);
    }

    // 金额相加
    public static String moneyAdd(String valueStr,String addStr){
        BigDecimal value = new BigDecimal(valueStr);
        BigDecimal augend = new BigDecimal(addStr);
        return mFecimalFormat.format(value.add(augend));
    }

    public static String StringFilter(String str) throws PatternSyntaxException {
        // 清除掉所有特殊字符
        String regEx="[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~！@#￥%……&*（）——+|{}【】‘；：”“’。，、？]";
        Pattern p = Pattern.compile(regEx);
        Matcher m = p.matcher(str);
        return m.replaceAll("").trim();
    }

    /**
     * 值比较大小
     * <br/>如果valueStr大于等于compValueStr,则返回true,否则返回false
     *  true 代表可用余额不足
     * @param valueStr (需要消费金额)
     * @param compValueStr (可使用金额)
     * @return
     */
    public static boolean moneyComp(String valueStr,String compValueStr){

        if(TextUtils.isEmpty(valueStr)){
            valueStr = "0";
        }
        if(TextUtils.isEmpty(compValueStr)){
            compValueStr = "0";
        }
        BigDecimal value = new BigDecimal(valueStr);
        BigDecimal compValue = new BigDecimal(compValueStr);
        //0:等于    >0:大于    <0:小于
        int result = value.compareTo(compValue);
        if(result >= 0){
            return true;
        }else{
            return false;
        }
    }

    /**
     * 值比较大小
     * <br/>如果valueStr大于compValueStr,则返回true,否则返回false
     *  true 代表可用余额不足
     * @param valueStr (需要消费金额)
     * @param compValueStr (可使用金额)
     * @return
     */
    public static boolean moneyCompMore(String valueStr,String compValueStr){

        if(TextUtils.isEmpty(valueStr)){
            valueStr = "0";
        }
        if(TextUtils.isEmpty(compValueStr)){
            compValueStr = "0";
        }
        BigDecimal value = new BigDecimal(valueStr);
        BigDecimal compValue = new BigDecimal(compValueStr);
        //0:等于    >0:大于    <0:小于
        int result = value.compareTo(compValue);
        if(result > 0){
            return true;
        }else{
            return false;
        }
    }

    /**
     * 比较两个时间的大小
     * @param DATE1
     * @param DATE2
     * @return
     */
    public static int compare_date(String DATE1, String DATE2) {
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        try {
            Date dt1 = df.parse(DATE1);
            Date dt2 = df.parse(DATE2);
            if (dt1.getTime() > dt2.getTime()) {
                System.out.println("dt1 在dt2前");
                return 1;
            } else if (dt1.getTime() < dt2.getTime()) {
                System.out.println("dt1在dt2后");
                return -1;
            } else {
                return 0;
            }
        } catch (Exception exception) {
            exception.printStackTrace();
        }
        return 0;
    }
}
